﻿Thank you for using the SUPRA chess engine!

Supra 30.0 is the biggest update in Supra's history: multiprocessing (up to 8 cores), quiescence search, search up to 40 plies, mop-up, personalities and a new romantic opening book.

This version has 60 configuration options and 2 buttons to clear the memory, organised by topic. Options marked with * affect the search speed. Options marked with ** were implemented in Supra 30.0 with the precious and Indispensable help of Claude, an artificial intelligence by Anthropic.


==================================================
SYSTEM
==================================================

· Threads** : number of CPU cores used by Supra (from 1 to 8). By default, Supra uses 1 thread and works exactly like a single-processor engine. To use multiprocessing, choose the number of threads before the game starts (preferably up to the number of cores of the computer). Multiprocessing pays off most in games of 10 minutes or more. (default: 1)

· Hash** : size of the hash table in MB (from 1 to 4096). The table stores the moves and values of positions already analysed and is shared by all threads. (default: 64)

· Hash moves** : enables the hash table. (default: on)

· CPU power level* : user calibration of the time management in four levels: EXTREME for maximum-performance computers (+4 GHz); HIGH for top computers (between 2.5 and 4 GHz); MEDIUM for normal computers (between 1.5 and 2.5 GHz) and LOW for slower computers (-1.5 GHz). (default: MEDIUM)


==================================================
TIME
==================================================

· Deep* : sets the search depth level. For games of 1 minute or less, I recommend Deep<=4. With time control enabled, Supra 30.0 can deepen the search up to 40 plies. (default: 9)

· Time control* : enables control of the time available for the search. (default: on)

· Time usage* : sets the search time. (default: 3)


==================================================
BOOK AND MEMORY
==================================================

· OwnBook** : enables Supra's own opening book. Supra 30.0 comes with a new romantic book with 350 positions: every line of the previous book plus classical gambits such as the King's Gambit (with the Muzio), the Evans Gambit, the Fried Liver, the Traxler Counterattack, the Marshall Attack, the Schliemann Gambit, the Latvian Gambit, the Budapest Gambit, the Albin Countergambit, the Alien Gambit, the Martian Gambit and the Portuguese Variation of the Scandinavian. Some positions have several continuations with weights, and Supra chooses among them, so it does not always play the same opening. (The old name "Own book" is still accepted.) (default: on)

· Book file** : opening book file. By default, Supra uses the book built into the executable. If the file supra_livro.txt is in the engine folder, Supra uses that file instead. It can be edited with any text editor: each line has the moves from the start and Supra's replies, for example "e2e4 e7e5 -> g1f3 65 | f2f4 35". (default: <internal>)

· Memory* : when enabled, Supra's memory stores the value of up to 1,000,000 moves, so Supra does not need to re-evaluate a position that is already in memory. (default: on)

· Clear memory (button): Supra's memory recycles itself automatically, so it never needs to be cleared, unless the user wants to review the search process for a position already stored.

· Deep memory* : besides the 1,000,000 moves/positions of level depth=1, Supra can also store positions of levels depth<=5. Although this can sometimes help in fast games, I think it is better not to enable it for games under 5 minutes. (default: on)

· Clear deep memory (button): like the normal memory, the deep memory recycles itself automatically and only needs to be cleared to review the search process of a position already stored.


==================================================
SEARCH
==================================================

· Lazy SMP** : multiprocessing mode. All threads search the same position, at staggered depths, sharing the hash table and the alpha values, and each one benefits from the work of the others. If disabled, the threads split the root moves among themselves. (default: on)

· SMP time factor** : extra time given to Supra when it uses several threads, as a percentage per additional thread (0 to 100). With 0, Supra uses exactly the same time with 1 or 8 threads, and the gain comes only from thinking better. In the author's tests, 0 was the best value. (default: 0)

· Best thread by depth** : at the end of the search, Supra chooses the move of the thread that reached the deepest valid search, instead of always the first thread's move. An incomplete cycle counts as valid as soon as the first root move (the best of the previous cycle, always searched first) is finished; the move that was being searched when the time ran out is discarded. If several threads reach the same depth, the one that finished more root moves wins. (The author's idea, implemented with Claude's help.) (default: on)

· Lazy depth spread** : how the starting depths are spread over the threads. "balanced": with 4 threads, two start at the first thread's level and two one cycle ahead; with 8 threads, three at the same level, four one cycle ahead and one two cycles ahead. "classic": the usual Lazy SMP spread. (The author's idea, implemented with Claude's help.) (default: balanced)

· Shared alpha by depth** : threads at the same depth share their alpha values, so each one cuts earlier thanks to the others' work. Experimental option: in the author's tests Supra was more balanced without it. (The author's idea, implemented with Claude's help.) (default: off)

· Lazy eval* ** : two-sided lazy evaluation. When the material alone already guarantees the cutoff, or already guarantees that the leaf is irrelevant, the full evaluation is skipped. About 6% faster, with the same result. (default: on)

· Eval cache* ** : evaluation memory. About 17% of the evaluations repeat a position already evaluated in the same search (mostly because of the IID cycles); the result is stored in a small table and reused. It gives exactly the same search, about 5% faster. Together with Lazy eval: about 13% faster to the same depth. (default: on)

· PVS* (Principal Variation Search): for each node, Supra starts with a search using a very narrow window (<1). If the value stays inside that window, the full-window search is not needed and Supra saves a lot of search time at that node. (default: on)

· Lmr* (Late Move Reductions): the first children of each node (about five) are searched at full depth and the rest at reduced depth. A new full-depth search is only made when the reduced search causes a cutoff. (default: on)

· Null move filter* : the side to move passes and lets the opponent play. If the result of this analysis (with depth=depth-2) is still bad for the opponent, the node is fully cut. (default: plus)

· Null move in pawn endings* : allows null move in pawn-only endgames. Disabled by default, because zugzwang is frequent in these endgames and null move can mislead the search. (default: off)

· Vertical filter* : a powerful filter of clearly bad variations from depth=3. (default: on)

· Vertical margin* : safety margin of the vertical filter, in Supra's internal units (10 = one pawn). The larger it is, the fewer variations are cut. (default: 10)

· Vertical mate guard* : prevents the vertical filter from cutting variations when mate values are involved. (default: on)

· Turbo search* : when enabled, Supra uses a slightly faster search method, with staged increments of alpha. (default: on)

· Turbo exact* : exact variant of the Turbo search, more precise but slower. (default: off)

· Search extension* : extends the search (depth+2) at the leaves after captures, checks or promotions, when the initial search is very fast. (default: on)

· Quiescence search** : at the leaves, Supra keeps searching only captures and promotions until the position is quiet, with "stand pat" (the side to move may decline to capture), MVV-LVA ordering (most valuable victim, least valuable attacker) and a material-only evaluation. It removes many tactical errors. (default: on)

· Quiescence window** : in the middlegame, the quiescence search uses an alpha-beta window, which makes it much faster. (default: on)

· Quiescence window min material** : below this material (kings excluded, pawn=10; the starting material is 800), the window is closed and the quiescence search becomes exact, for maximum precision in technical endgames. The value 0 keeps the window always open. (The author's idea, implemented with Claude's help.) (default: 267, i.e. 1/3 of the material)

· Hash moves depth** : depth margin for using the moves stored in the hash table. (default: 2)

· Positive float filter* : four options: off (completely disables the filtering effect); full (Supra chooses the maximum filtering level according to the current position and the available time); auto (Supra chooses the appropriate filtering level according to the current position and the available time); manual (the user sets the filtering level from depth=5). (default: auto)

· Positive float filter level* : (only valid if Positive float filter=manual) sets the filtering level when Supra finds a reply (at each node) worth at least: (0-empty); (1-pawn); (2-bishop); (3-knight); (4-rook); (5-queen); (6-checkmate in 12 moves). (default: 5)

· Negative float filter* : the same four options (off, full, auto, manual), applied to the opponent's replies; in manual mode, from depth=4. (default: auto)

· Negative float filter level* : (only valid if Negative float filter=manual) sets the filtering level when Supra finds an opponent's reply (at each node) worth at least: (0-empty); (1-pawn); (2-bishop); (3-knight); (4-rook); (5-queen); (6-checkmate in 12 moves). (default: 5)


==================================================
EVALUATION AND STYLE
==================================================

· Extra evaluation* : besides the material difference, the extra evaluation measures the position of Supra's and the opponent's pieces. For games of 1 minute or less, I recommend turning it off. (default: on)

· Extra definition* : Supra values not only the material difference but also the material quotient, which distinguishes different quotients for the same difference. For example, king + 3 pawns against king + 1 pawn is stronger than king + queen + 3 pawns against king + queen + 1 pawn. This way Supra looks for exchanges when ahead and avoids them when behind. For games of 1 minute or less, I recommend turning it off. (default: on)

· Personality : chooses a playing style, which sets at once seven parameters (Aggressiveness, Attack to King proximity, Attack by check to King, Mobility, Positional relevance, Material quociente and the sacrifice limit). Inspired by Alexander Shashin's ideas. (default: custom)
    - custom: the individual options decide (Supra's original mode);
    - hyper-romantic: all-out attack; will sacrifice up to a queen for a tactical or positional advantage;
    - romantic: attacking play; will sacrifice up to a rook;
    - dynamic: Supra's classic style (the same values as the default options);
    - positional: solid, positional play; gives great value to material and piece placement.
  With a personality selected, the individual boxes of those seven parameters are ignored. To tune them by hand, choose "custom".

· Temperament : there are 3 temperament states in Supra: dynamic (the most aggressive), consistent and solid (the most strategic). The differences are subtle; the Aggressiveness parameter has more real impact on the final playing style. (default: dynamic)

· Aggressiveness : sets Supra's tendency to choose positions that attack the opponent's queen, rooks, knights and bishops, and the weight of the king attack in the evaluation. (default: 1)

· Attack to King proximity : sets Supra's tendency to choose positions that attack by proximity to the opponent's king. (default: 1)

· Attack by check to King : sets Supra's tendency to choose positions that attack the opponent's king with checks. (default: 1)

· Positional relevance : sets the weight of piece placement in the evaluation formula. (default: 5)

· Mobility : sets the weight of piece mobility in the evaluation formula. (default: 5)

· Material quociente : sets the weight of the material quotient in the evaluation formula and in the search cutoffs. (default: 5)

· Castle value : sets the value given to castling. (default: 3)

· Mop-up** : in endgames against a lone king, Supra drives the enemy king to the edge and brings its own king closer. With this option, Supra easily mates with K+R vs K. (default: on)

· Positional matrices : static matrices to guide Supra at the start of the game and dynamic matrices to help Supra deliver mate in the endgame. (default: on)


==================================================
INTERFACE
==================================================

· Full info : sends to the GUI all of Supra's move alternatives, even those with very low values. (default: on)

· UCI_Chess960 : managed automatically by the GUI in Chess960 games. (default: off)


==================================================
TESTING OPTIONS (multiprocessing and hash table)
==================================================

These options are for development tests and should not be changed in normal use:
Shared alpha (on), Split IID7 (on), Cycle barrier (on), Hash cutoffs (on), Quiescence frontier (on), Wait SCAN1 (on), Root aspiration (off), IID cycle factor (0).


*  Parameters that affect the search speed.
** Implemented in Supra 30.0 with the precious and Indispensable help of Claude, an artificial intelligence by Anthropic.


==================================================
RECOMMENDED SETTINGS
==================================================

Options not listed in the tables keep their default values.

· T <= 1 min:
  CPU power level: medium
  Deep: 4
  Search extension: off
  Positive float filter: manual / level 2
  Negative float filter: manual / level 2
  Extra evaluation: off
  Extra definition: off
  Memory: off
  Deep memory: on

· 1 min < T <= 5 min:
  CPU power level: medium
  Deep: 9
  Search extension: off
  Positive float filter: manual / level 4
  Negative float filter: manual / level 4
  Memory: off
  Deep memory: on

· 5 min < T <= 15 min:
  CPU power level: high
  Deep: 9
  Search extension: off
  Positive float filter: auto
  Negative float filter: auto
  Memory: on
  Deep memory: on

· 15 min < T <= 240 min:
  CPU power level: high
  Deep: 9
  Search extension: on
  Positive float filter: auto
  Negative float filter: auto
  Memory: on
  Deep memory: on

· T > 240 min:
  CPU power level: high
  Deep: 9
  Search extension: on
  Positive float filter: off
  Negative float filter: off
  Memory: on
  Deep memory: on

In every case:
  Threads: 1 in fast games; in games of 10 minutes or more, the number of cores of the computer (up to 8)
  Hash: 64 MB or more (for example 256 MB for long games)
  Personality: custom (the strongest) or another personality, depending on the style you prefer


==================================================
NOTES
==================================================

Supra is a UCI chess engine to be installed in GUIs such as Fritz, ChessBase, Arena, Hiarcs, Cute Chess and others.

· Supra is compatible with GUI opening books and FEN positions. Supra does not access tablebases directly; the GUI may use them for analysis or game adjudication.
· It can play games from any position.
· It accepts engine tournaments and matches.


Have fun with SUPRA!

Pedro Mourão Soares Correia
